package com.ruoyi.cbs.approval.service;

import java.util.List;
import com.ruoyi.cbs.approval.domain.ApprovalResult;
import com.ruoyi.cbs.approval.domain.vo.ApprovalReqVO;
import com.ruoyi.cbs.approval.domain.vo.RejectedReqVO;
import com.ruoyi.cbs.approval.domain.vo.StartInstanceReqVO;

/**
 * 审核结果Service接口
 * 
 * @author ruoyi
 * @date 2025-11-12
 */
public interface IApprovalResultService 
{
    /**
     * 查询审核结果
     * 
     * @param id 审核结果主键
     * @return 审核结果
     */
    public ApprovalResult selectApprovalResultById(Long id);

    /**
     * 查询审核结果列表
     * 
     * @param approvalResult 审核结果
     * @return 审核结果集合
     */
    public List<ApprovalResult> selectApprovalResultList(ApprovalResult approvalResult);

    /**
     * 查询用户的审核任务列表
     * @param approvalResult
     * @return
     */
    public List<ApprovalResult> selectUserApprovalList(ApprovalResult approvalResult);

    /**
     * 新增审核结果
     * 
     * @param approvalResult 审核结果
     * @return 结果
     */
    public int insertApprovalResult(ApprovalResult approvalResult);

    /**
     * 修改审核结果
     * 
     * @param approvalResult 审核结果
     * @return 结果
     */
    public int updateApprovalResult(ApprovalResult approvalResult);

    /**
     * 更新执行状态
     *
     * @param approvalResult 审核结果
     * @return 结果
     */
    public int updateExecuteStatus(ApprovalResult approvalResult);

    /**
     * 删除 对象审核流程中 未执行的审核任务
     * @param targetId 目标ID
     * @param targetType 目标类型
     * @return 结果
     */
    public int deleteByTargetId(Long targetId, String targetType);

    /**
     * 删除 对象审核流程中 同节点下不同人的审核任务
     * @param configId 审批配置ID
     * @return 结果
     */
    public int deleteByConfigId(Long configId, Long targetId, String targetType);

    /**
     * 批量删除审核结果
     * 
     * @param ids 需要删除的审核结果主键集合
     * @return 结果
     */
    public int deleteApprovalResultByIds(Long[] ids);

    /**
     * 删除审核结果信息
     * 
     * @param id 审核结果主键
     * @return 结果
     */
    public int deleteApprovalResultById(Long id);

//    /**
//     * 发起审批流程
//     * @param startInstanceReqVO
//     * @return
//     */
//    public int startApprovalInstance(StartInstanceReqVO startInstanceReqVO);
//    /**
//     * 审核通过
//     * @param approvalReqVO
//     * @return
//     */
//    public int approval(ApprovalReqVO approvalReqVO);
//
//    /**
//     * 审核驳回
//     * @param rejectedReqVO
//     * @return
//     */
//    public int reject(RejectedReqVO rejectedReqVO);
}
